pulse-dashboard
Version:
A Next.js Dashboard application for real-time monitoring and historical analysis of Playwright test executions, based on playwright-pulse-report. This component provides the UI for visualizing Playwright test results and can be run as a standalone CLI too
3 lines (2 loc) • 9.08 kB
JavaScript
module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},24868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},91027,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),R=e.i(70101),h=e.i(26937),E=e.i(10372),v=e.i(93695);e.i(52474);var x=e.i(220),f=e.i(89171),g=e.i(24868),m=e.i(14747);async function w(){let e;console.log("[API /api/current-run] Raw process.env.PULSE_USER_CWD:",process.env.PULSE_USER_CWD),console.log("[API /api/current-run] Raw process.env.PULSE_REPORT_DIR:",process.env.PULSE_REPORT_DIR),console.log("[API /api/current-run] Current process.cwd() for Next.js server:",process.cwd());let t=process.env.PULSE_USER_CWD,r=process.env.PULSE_REPORT_DIR,a=process.cwd(),n=t&&""!==t.trim()?t.trim():a,s=r&&""!==r.trim()?r.trim():m.default.join(n,"pulse-report");console.log("[API /api/current-run] Effective baseDir determined:",n),console.log("[API /api/current-run] Effective reportDir determined:",s);let o=m.default.join(s,"playwright-pulse-report.json");console.log("[API /api/current-run] Attempting to read current run report from:",o);try{e=await g.default.readFile(o,"utf-8")}catch(t){console.error(`[API /api/current-run] ENTERED CATCH for fs.readFile. Path: ${o}. Error: ${t.message}. Code: ${t.code}. Stack: ${t.stack}`);let e=`Report file not found or unreadable at '${o}'. Base directory used: '${n}'. Error: ${t.message||"Unknown file read error."}${t.code?` (Code: ${t.code})`:""}`;return f.NextResponse.json({message:e,pathAttempted:o,baseDirUsed:n,errorCode:t.code||"N/A"},{status:"ENOENT"===t.code?404:500})}try{let t=JSON.parse(e);return t.metadata?t.metadata.userProjectDir=n:t.metadata={generatedAt:new Date().toISOString(),userProjectDir:n},f.NextResponse.json(t)}catch(t){console.error(`[API /api/current-run] ENTERED CATCH for JSON.parse. Path: ${o}. Error: ${t.message}. Stack: ${t.stack}`);let e=`Invalid JSON format in report file '${o}'. Error: ${t.message||"Unknown parsing error."}`;return f.NextResponse.json({message:e,pathAttempted:o},{status:400})}}e.s(["GET",0,w],50822);var C=e.i(50822);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/current-run/route",pathname:"/api/current-run",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/current-run/route.ts",nextConfigOutput:"",userland:C}),{workAsyncStorage:P,workUnitAsyncStorage:y,serverHooks:S}=A;async function N(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),A.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/current-run/route";f=f.replace(/\/index$/,"")||"/";let g=await A.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:m,params:w,nextConfig:C,parsedUrl:P,isDraftMode:y,prerenderManifest:S,routerServerContext:N,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,resolvedPathname:b,clientReferenceManifest:I,serverActionsManifest:O}=g,U=(0,i.normalizeAppPath)(f),k=!!(S.dynamicRoutes[U]||S.routes[b]),D=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,P,!1):t.end("This page could not be found"),null);if(k&&!y){let e=!!S.routes[b],t=S.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await D();throw new v.NoFallbackError}}let j=null;!k||A.isDev||y||(j="/index"===(j=b)?"/":j);let q=!0===A.isDev||!k,$=k&&!q;O&&I&&(0,o.setManifestsSingleton)({page:f,clientReferenceManifest:I,serverActionsManifest:O});let H=e.method||"GET",M=(0,s.getTracer)(),L=M.getActiveScopeSpan(),F=!!(null==N?void 0:N.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,C,S,K);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let W={params:w,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:q,incrementalCache:B,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,N)},sharedContext:{buildId:m}},G=new l.NodeNextRequest(e),J=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>A.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${H} ${f}`)}),i=async n=>{var s,i;let l=async({previousCacheEntry:r})=>{try{if(!K&&T&&_&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=W.renderOpts.fetchMetrics;let i=W.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let l=W.renderOpts.collectedTags;if(!k)return await (0,c.sendResponse)(G,J,s,W.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,R.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[E.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=E.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,a=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=E.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:T})},!1,N),t}},u=await A.handleResponse({req:e,nextConfig:C,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:_,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!k)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",T?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,R.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&k||d.delete(E.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(G,J,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};F&&L?await i(L):(n=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${f}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},i),void 0,!F))}catch(t){if(t instanceof v.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:T})},!1,N),k)throw t;return await (0,c.sendResponse)(G,J,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:y})},"routeModule",0,A,"serverHooks",0,S,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,y],91027)}];
//# sourceMappingURL=%5Broot-of-the-server%5D__016m3l7._.js.map